/* 工具 */
export default {
	test(callback) {
		console.log('工具-test in', callback)
	},
	// 根据身份证号计算年龄
	calculateAgeByIDNumber(IDNumber){
		if(!IDNumber) return '';
		
		let Born = IDNumber.substr(6, 8);
		console.log(Born)
		let year = Born.substr(0,4);
		let month = Born.substr(4,2);
		let day = Born.substr(6,4);
		let year_now = new Date().getFullYear();
		let month_now = new Date().getMonth() + 1;
		let day_now = new Date().getDate();
		
		let age = year_now - year;
		if(month_now > month) age--;
		else if(month_now == month && day_now > day ) age--;
		
		return age;
	},

	// 入口：上传图片 返回base64，不带前缀'data:image/png;base64,'
	chooseImage(callback) {
		// console.log('工具-上传图片 in', callback)
		uni.chooseImage({
			count: 1, //默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: (res) => {
				// console.log('工具-上传图片 uni.chooseImage', res, res.tempFilePaths[0])

				// #ifdef MP-WEIXIN
				uni.getFileSystemManager().readFile({
					filePath: res.tempFilePaths[0], //选择图片返回的相对路径
					encoding: 'base64', //编码格式
					success: res => { //成功的回调
						// console.log('工具-上传图片 WX', res)
						callback(res.data.replace(/[\r\n]/g, '')); // 将回车换行换为空字符''
					}
				})
				// #endif
				// #ifndef MP-WEIXIN
				uni.request({
					url: res.tempFilePaths[0],
					method: 'GET',
					responseType: 'arraybuffer',
					success: res => {
						// console.log('工具-上传图片 H5', res)
						callback(uni.arrayBufferToBase64(res.data).replace(/[\r\n]/g, ''));
					}
				})
				// #endif
			}
		});
	},
	// // 删除图片
	// deleteImg: function(e) {
	// 	var imgs = this.imgs;
	// 	var index = e.currentTarget.dataset.index;
	// 	imgs.splice(index, 1);
	// 	this.imgs = imgs;
	// },
	// // 预览图片
	// previewImg: function(e) {
	// 	//获取当前图片的下标
	// 	var index = e.currentTarget.dataset.index;
	// 	//所有图片
	// 	var imgs = this.imgs;
	// 	uni.previewImage({
	// 		//当前显示图片
	// 		current: imgs[index],
	// 		//所有图片
	// 		urls: imgs
	// 	})
	// },
	// 检测是否需要登录
	checkLogin() {
		if (vk.pubfn.isNull(vk.getVuex('$user.userInfo'))) {
			// 不关闭页面，直接跳转到登录页，登录成功自动返回当前页面
			vk.navigateToLogin({
				mode: "navigateTo"
			});
		}
	},

	// 入口：位置授权
	getAuthorizeInfo(callback) {
		// #ifndef MP
		this.getRegeo(callback);
		// #endif
		// #ifdef MP-WEIXIN
		uni.getSetting({ // 检查是否已授权
			success: (res) => {
				// console.log('uni.getSetting', res)
				if (res.authSetting['scope.userLocation']) { // 已授权，调用位置
					this.getRegeo(callback);
				} else { // 未授权，发起授权请求
					uni.authorize({
						scope: 'scope.userLocation',
						success: () => { // 允许授权
							this.getRegeo(callback);
						},
						fail: () => { // 拒绝授权
							this.openConfirm(callback);
							console.log("拒绝授权")
						}
					})
				}
			},
			fail(err) {
				console.log('位置授权err', err)
				this.$util.toast('fail' + JSON.stringify(err))
				callback(null);
			}
		})
		// #endif
	},
	// 当用户第一次拒绝后再次请求授权
	openConfirm(callback) {
		uni.showModal({
			title: '请求授权当前位置',
			content: '需要获取您的地理位置，请确认授权',
			success: (res) => {
				if (res.confirm) {
					// 确认授权，打开设置界面
					uni.openSetting({
						success: (res) => {
							// console.log('openSetting success', res)
							if (res.authSetting && res.authSetting['scope.userLocation']) {
								this.getRegeo(callback);
							}else{
								uni.showToast({
									title: '未授权，无法获得位置信息',
									icon: 'none',
									duration: 1000
								})
								callback(null);
							}
						},
						fail: err => {
							// console.log('openSetting fail', err)
							uni.showToast({
								title: '打开设置界面出错，无法获得位置信息',
								icon: 'none',
								duration: 1000
							})
							callback(null);
						}
					});
				} else if (res.cancel) {
					uni.showToast({
						title: '你拒绝了授权，无法获得位置信息',
						icon: 'none',
						duration: 1000
					})
					callback(null);
				}
			}
		});
	},
	// 
	/*
	高德 SDK 获取当前定位。注意：该接口未授权也能取到地址，因此不应直接调用该接口，而是调用 getAuthorizeInfo 
	1、将高德SDK放入项目中 amap-wx.130.js 
	2、APP.vue
		2.1 引入SDK
		import amap from '@/common/amap-wx.130.js';  // 高德 小程序SDK
		
		2.2 声明全局变量 amapPlugin
		globalData: {
			amapKay: '6352cd413d69649fa7b30722baee4a8e', // 高德key
			amapPlugin: null,  // 高德 小程序SDK 实例对象 
		},
		
		2.3 在onLaunch中初始化实例
		// 初始化 高德 小程序SDK 实例对象
		this.globalData.amapPlugin = new amap.AMapWX({
			key: this.globalData.amapKay,
		});
		
		2.4 在页面引用。通过callback回调将获得的位置对象赋给页面变量
	*/
	getRegeo(callback) {
		uni.showLoading({
			title: '获取地址中'
		});
		const amapPlugin = getApp().globalData.amapPlugin;
		console.log('高德 in')
		// 用法说明：https://lbs.amap.com/api/webservice/guide/api/georegeo/#regeo
		amapPlugin.getRegeo({
			success: (res) => {
				console.log('高德success', res)
				/*
				[{
					desc: "沈阳市沈河区人民政府附近"
					height: undefined
					iconPath: undefined
					id: 0
					latitude: 41.795688
					longitude: 123.45884
					name: "沈阳市沈河区盛京路25号"
					regeocodeData: {roads: Array(3), roadinters: Array(1), formatted_address: "辽宁省沈阳市沈河区皇城街道沈河区人大常委会沈阳市沈河区人民政府", addressComponent: {…}, aois: Array(5), …}
					width: undefined
				}]
				
				res[0].regeocodeData.addressComponent:{
					adcode: "210105"
					building: {name: Array(0), type: Array(0)}
					businessAreas: (3) [{…}, {…}, {…}]
					city: "沈阳市"
					citycode: "024"
					country: "中国"
					district: "皇姑区"
					neighborhood: {name: Array(0), type: Array(0)}
					province: "辽宁省"
					streetNumber: {number: "9号", location: "123.441611,41.824793", direction: "西北", distance: "16.901", street: "松花江街"}
					towncode: "210105021000"
					township: "北塔街道"
				}
				*/
				uni.hideLoading();
				// 回调。注意res是数组，回调里应该使用res[0]
				callback(res);
			},
			fail: err => {
				console.log('高德fail', err)
				uni.hideLoading();
				uni.showToast({
					title: '获得位置失败' + JSON.stringify(err),
					icon: 'none',
					duration: 2000
				})
				callback(null);
			}
		});
	},
	
	// // getLocationInfo 已被 高德小程序SDK getRegeo取代。仅作为收藏。
	// // 获取地理位置 使用逆地址解析，需要MD5加密。逆地址解析调用了自编写的云函数
	// getLocationInfo() {
	// 	// import md5 from "@/utils/md5.js"
	// 	uni.getLocation({
	// 		type: 'gcj02',
	// 		geocode: 'true',
	// 		success: (res) => {
	// 			console.log('当前位置：', res);
	// 			let longitude = res.longitude; // 经度
	// 			let latitude = res.latitude; // 纬度
	
	// 			let url = '/ws/geocoder/v1';
	// 			let key = app.globalData.mapKey;
	// 			let location = res.latitude + ',' + res.longitude;
	// 			let SK = app.globalData.mapSK;
	// 			let sig = md5(`${url}?key=${key}&location=${location}${SK}`);
	
	// 			let data = {
	// 				location,
	// 				key,
	// 				sig
	// 			}
	
	// 			this.$util.requestMapQQDomain(url, data, 'GET')
	// 				.then(res => {
	// 					// console.log('逆地址解析结果', res)
	// 					//status: 110, message: '请求来源未被授权
	// 					// status: 0
	// 					this.location = JSON.stringify(res)
	
	// 					if (res.status === 0) {
	// 						// console.log('逆地址解析成功', res.result)
	
	// 						let salesLocation = {
	// 							CurrLongitude: longitude,
	// 							CurrLatitude: latitude,
	// 							CurrProvince: res.result.ad_info.province,
	// 							CurrCity: res.result.ad_info.city,
	// 							CurrArea: res.result.ad_info.district,
	// 							CurrAddDetail: res.result.formatted_addresses
	// 								.recommend,
	// 						};
	// 						vk.setVuex('$user.userInfo.salesLocation', salesLocation);
	// 						setTimeout(() => {
	// 							this.submit1();
	// 						}, 1000);
	// 					} else {
	// 						// console.log('逆地址解析失败', res)
	// 						this.$util.modal('逆地址解析失败', res.message)
	// 					}
	// 				}).catch(err => {
	// 					// console.log('逆地址解析异常', err)
	// 					this.$util.modal('逆地址解析异常', err.message)
	// 				})
	// 		},
	// 		fail: err => {
	// 			// console.log('获取定位失败：', err);
	// 			this.$util.toast('请打开手机定位')
	// 		}
	// 	});
	// },
	
	// 图片转base64
	fileToBase64(url) {
		console.log('工具-获取文件 fileToBase64 in', url)
		return new Promise(function(resolve, reject) {
			// #ifdef MP-WEIXIN
			uni.request({
				url: url,
				method: 'GET',
				responseType: 'arraybuffer',
				success: res => {
					console.log('工具-获取文件 request', res)
					resolve('data:image/png;base64,' + uni.arrayBufferToBase64(res.data).replace(/[\r\n]/g, ''));
				},
				fail: err => {
					console.log('工具-获取文件 request err', err)
					reject(err)
				}
			})
			// uni.getFileSystemManager().readFile({
			// 	filePath: url, //选择图片返回的相对路径
			// 	encoding: 'base64', //编码格式
			// 	success: res => { //成功的回调
			// 		console.log('工具-获取文件 WX', res)
			// 		resolve('data:image/png;base64,' + res.data.replace(/[\r\n]/g, '')); // 将回车换行换为空字符''
			// 	}
			// })
			// #endif
			// #ifndef MP-WEIXIN
			uni.request({
				url: url,
				method: 'GET',
				responseType: 'arraybuffer',
				success: res => {
					console.log('工具-获取文件 H5', res)
					resolve('data:image/png;base64,' + uni.arrayBufferToBase64(res.data).replace(/[\r\n]/g, ''));
				},
				fail: err => {
					console.log('工具-获取文件 H5 err', err)
					reject(err)
				}
			})
			// #endif
		});
		
		// vk.request({
		//   url,
		//   method: "GET",
		//   dataType: "default",
		//   success: (imageBuffer) => {
		// 	  console.log('request ok', imageBuffer)
		// 	  let base64 = "data:image/png;base64," + imageBuffer.toString('base64');
		// 	  return base64
		//   }
		// })
		
		
		// vk.pubfn.fileToBase64({
		//   file:res.tempFiles[0],
		//   success: (base64) => {
		
		//   }
		// });
	}
}
